/*
 * 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利，本文为公司机密源码不得外泄。
 * 
 * 公司机密源码，请开发人员格守公司保密条款。
 *
 * 本文采用《知启蒙机密许可证》，除非符合许可证，否则不可使用该文件！
 * 1、您作为公司签署的正式开发人员，请在公司保密条款下进行源码编辑；
 * 2、您在项目源码编辑时，请检查版权申明，同一项目下源码版权都必须使用该版权申明；
 * 3、您在项目模块或组件划分时，部分模块或组件可以作为开源项目发布时，需得公司授权同意，并从本项目中移出新建开源项目管理；
 * 4、您在项目源码编辑时对版权有不清楚的地方，或遇到源码泄漏问题，请立即和项目经理或公司管理层反映。
 * 5、您如果是在未经公司授权获得源码的，表明您已侵犯知启蒙公司权益，请立即删除源码。
 * 
 * 未经公司授权，任何人不得泄漏公司源码。详见完整许可证的权限和限制。
 */
package org.zhiqim.kernel.model.results;

/**
 * 整数错误码的结果
 *
 * @version v1.0.0 @author zgzou 2021年11月23日 新建与整理
 */
public class RIS<V> extends R<V>
{
    private int errCode;
    private String errMsg;
    
    @Override /** 是否成功 */
    public boolean success()
    {
        return errCode == 0;
    }

    @Override /** 安全检查 */
    protected void check()
    {
        throw new RuntimeException(errMsg==null?"ERR:"+errCode:errMsg);
    }
    
    /************************************************************************/
    //静态方法创建对象
    /************************************************************************/
    
    /** 静态方法创建对象并初始化正确值 */
    public static <V> RIS<V> value(V value)
    {
        RIS<V> r = new RIS<V>();
        r.value = value;
        return r;
    }
    
    /** 静态方法创建对象并初始化无内容的正确值 */
    public static <V> RIS<V> correct()
    {
        return new RIS<V>();
    }
    
    /** 静态方法创建对象并初始化错误码 */
    public static <V> RIS<V> error(int errCode, String errMsg)
    {
        RIS<V> r = new RIS<V>();
        r.errCode = errCode;
        r.errMsg = errMsg;
        return r;
    }
    
    /************************************************************************/
    //获取值
    /************************************************************************/
    
    public int errCode()
    {
        return errCode;
    }
    
    public String errMsg()
    {
        return errMsg;
    }
    
    public String errMsg(int len)
    {
        return errMsg==null?null:(errMsg.length()>len?errMsg.substring(0, len):errMsg);
    }
}